{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 5.8. Writing massively parallel code for NVIDIA graphics cards (GPUs) with CUDA"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import math\n",
    "import numpy as np\n",
    "from numba import cuda\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(cuda.gpus)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "b'GeForce GTX 980M'"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cuda.gpus[0].name"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "@cuda.jit\n",
    "def mandelbrot_numba(m, iterations):\n",
    "    # Matrix index.\n",
    "    i, j = cuda.grid(2)\n",
    "    size = m.shape[0]\n",
    "    # Skip threads outside the matrix.\n",
    "    if i >= size or j >= size:\n",
    "        return\n",
    "    # Run the simulation.\n",
    "    c = (-2 + 3. / size * j +\n",
    "         1j * (1.5 - 3. / size * i))\n",
    "    z = 0\n",
    "    for n in range(iterations):\n",
    "        if abs(z) <= 10:\n",
    "            z = z * z + c\n",
    "            m[i, j] = n\n",
    "        else:\n",
    "            break"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "size = 400\n",
    "iterations = 100"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "m = np.zeros((size, size))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 16x16 threads per block.\n",
    "bs = 16\n",
    "# Number of blocks in the grid.\n",
    "bpg = math.ceil(size / bs)\n",
    "# We prepare the GPU function.\n",
    "f = mandelbrot_numba[(bpg, bpg), (bs, bs)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "f(m, iterations)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "podoc": {
     "output_text": "<matplotlib.figure.Figure at 0x7f1085fbd4a8>"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nHcd7JqdKrZ/k6sK5Zh3J7JMyp61kr5H6Ac8JzHqzq196sDTqp8nzLnD1GmmpsYtV6ofJk6VeaFtL\nzpBJaX1ZtMHVtvnle3JobIHcsYF52+Vyoszp13uh1KeacVKeBUflY/DV0l5ju3bmyG1p50t3pYua\novVIV8nqB4devHnoVJZlWXa+GXv0OaUdKrZlIrCK9D55Xv7IjC/I5dIkl82X2nZwpOxmCbH/fQnd\nl/73psj5hP57ZH+8T5E5/V0ijXrHOgx14V49l/1Dbz60EO5ez1yezpZqL5Ab605uNyyQ2xhWHPD/\n8Hd1dQVW/B6IzhYAAAAAAICEeLMFAAAAAAAgIRbIRUOxLXPEiVAPLLDbfhp1AV1t7U4RKRqWdshq\ntMe3oONnpD5V6helnvdBUzzg5tZJfMEu/qj3u1SiQxoZOuSZ08TQMnPBuza5OV0jdpvURXqyNWbk\nixSdKbWeo0awemLRHpsZ0N9Ashrmc9KpbGMYz8jcgg+6OrvPjKFFeWWx1GMPrn6jfauToja+LfX7\npbaZkCfc1KY3uLpbn+T6w2GdJbX5OdSfhdB6rz1vNcVRmfyZ1DZStEbm5Idaf4lNM6P+Mpt0nvxj\nfeAkPDyxmcJitxW7fELkcv0dp5GisYPGLMsyWZt4wEO+23NbLRQdwlDEh1oLnS0AAAAAAAAJ8WYL\nAAAAAABAQsSI0JC0hY5IERpFKGZEvKg1NGqkKCVtNffuTBRiN8TRtndtdR/Qq77LXGenm9LdNWyM\nSOMLWutt+XYL0iSDPa9HPccNvn7KhIzdRURb/yf+ytXPnuPqLSbyM112XDq2k0uWHYv+bNftjCQm\n9FvP/Y+Xet03Xf0aU3dqdOltUh9y5WpzHxeHYk7mvJ6VLaqCOyrZ+/g3mXtJ6nZ7ufl5M17vmRs0\nb3ftmRh6bOeUhg2ys5buIHTCNFdP+rApvu7mnr3J1Rf/lxkl03JlYEONRfeXxjEdbk53ArM3MVPm\npks06DTPbX5f6h0SHdKfTd/GHymjQylVGjN6q9T6O3KkPBe2me+PpMiULz7kiw41MnYhQiujswUA\nAAAAACAh3mwBAAAAAABIqN36OtGEfKtyEy1CI2EXo9ZjI0WNECdKuTNRruiQRoZsbEZ337m2W/4h\nPe4rTfxAUzG6W5EvcfJCNrw+qX3RoqJxodBuITF2hxDdvemoRIcWftTVk0ysKlvh5vbJg7vjY6VR\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f1085fbd4a8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(1, 1, figsize=(10, 10))\n",
    "ax.imshow(np.log(m), cmap=plt.cm.hot)\n",
    "ax.set_axis_off()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2.99 ms ± 173 µs per loop (mean ± std. dev. of 100 runs,\n",
      "    10 loops each)\n"
     ]
    }
   ],
   "source": [
    "%timeit -n10 -r100 f(m, iterations)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "481 µs ± 106 µs per loop (mean ± std. dev. of 100 runs,\n",
      "    10 loops each)\n"
     ]
    }
   ],
   "source": [
    "%timeit -n10 -r100 cuda.to_device(m)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "101 µs ± 11.8 µs per loop (mean ± std. dev. of 100 runs,\n",
      "    10 loops each)\n"
     ]
    }
   ],
   "source": [
    "%%timeit -n10 -r100 m_gpu = cuda.to_device(m)\n",
    "f(m_gpu, iterations)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "m_gpu = cuda.to_device(m)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "238 µs ± 67.8 µs per loop (mean ± std. dev. of 100 runs,\n",
      "    10 loops each)\n"
     ]
    }
   ],
   "source": [
    "%timeit -n10 -r100 m_gpu.copy_to_host()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "```\n",
    "# Thread id in a 1D block\n",
    "tx = cuda.threadIdx.x\n",
    "# Block id in a 1D grid\n",
    "ty = cuda.blockIdx.x\n",
    "# Block width, i.e. number of threads per block\n",
    "bw = cuda.blockDim.x\n",
    "# Compute flattened index inside the array\n",
    "pos = tx + ty * bw\n",
    "if pos < an_array.size:  # Check array boundaries\n",
    "    # One can access `an_array[pos]`\n",
    "```"
   ]
  }
 ],
 "metadata": {},
 "nbformat": 4,
 "nbformat_minor": 2
}
